﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MINERP.MODEL.FoundationModel;

namespace MINERP.NewPB.Presenter
{
    using MINERP.COM;
    using MINERP.NewPB.Forms;

    /// <summary>
    /// 用于各个页面之前的数据中转
    /// </summary>
    class DataTransfer
    {
        /// <summary>
        /// //新建纸时的每一英寸在电脑屏上等于多少个相素点;
        /// </summary>
        public static int PERPIXEL = 10;
        public static int BarCodePixWidth
        {
            get { return IniFile.BarCodePixWidth; }
            set { IniFile.BarCodePixWidth = value; }
        }//25个相素点宽度的条码，以254DPI的打印机算，约等于0.1英寸，按照系统1inch=10个屏点算，所以此处约等于1个屏点

        public static readonly int BarCodeSmallPixWidth = 25;//25个相素点宽度的条码，以254DPI的打印机算，约等于0.1英寸，按照系统1inch=10个屏点算，所以此处约等于1个屏点
        public static bool IsShowImg = false;//是否显示图片
        public static int perPix = PERPIXEL;//每英寸相当于屏幕上多少个像素点
        public static string curUser;//当前操作员
        public static List<Tb_paperTemplate_Info> TemplateList;//模板列表供主界面和模板管理界面使用

        public static string PreSelectTemplateName;//选中的模板的名称，给此值赋值时还未发生选择模板改新照片列表，在此之前

        public static int curUid;// 当前操作员的UID
        public static bool IsShowWaste { get; set; }//是否显示浪费率
        public static int ShowOrderNum;//左边显示定单列表的数量
        //当前模板
        public static Tb_paperTemplate_Info curTemplate;

        //当前打印机
        public static Printer_Info CurPrinter;

        //新建大板的高度，单位：屏幕像素
        public static int inchBoardHeight { get { return Convert.ToInt32(curTemplate.BoardHeight * perPix); } }
        //宽度，单位:屏幕像素,也是红线的位置
        public static int inchBoardWidth { get { return Convert.ToInt32(curTemplate.BoardLength * perPix); } }
        //条码的情况：0-条码在下方;1-条码在左右；2-无条码；3条码在打在照片内测
        private static int _barAtR = 0;
        public static int BarCodeStatus { get { return _barAtR; } set { _barAtR = value; } }
        public static int PhotoDirection { get; set; }
        public static List<string>  DxfList { get; set; }

        public  static ThreadStatusController cancellation = new ThreadStatusController();
    }
    class ThreadStatusController
    {
        /// <summary>
        /// 声明为volatile可以避免用lock进行加锁同步
        /// 编译器自己会做优化
        /// 另外不能声明属性为volatile,因此只能作为成员变量放出.
        /// </summary>
        public volatile bool IsPauseRequired;
        public volatile bool IsStopRequired;
    }
}
